package com.tangcco.lockwell.service;

import com.github.pagehelper.PageInfo;
import com.tangcco.lockwell.domain.VocabularyList;
import com.tangcco.lockwell.viewmodel.student.vocabularyList.VocabularyListResponseVM;

import java.util.List;

public interface VocabularyListService {

    // 插入一条词汇记录到vocabulary_list表
    int insertVocabulary(VocabularyList vocabularyList);

    // 根据id查询词汇记录
    VocabularyList selectVocabularyById(int id);

    // 根据用户ID查询该用户的所有词汇记录
    List<VocabularyListResponseVM> selectVocabularyByUserId(int userId);

    // 根据题目ID查询对应的词汇记录列表
    List<VocabularyList> selectVocabularyByQuestionId(int questionId,int userId);

    // 更新词汇记录
    int updateVocabulary(VocabularyList vocabularyList);

    // 根据id删除词汇记录
    int deleteVocabularyById(int id);

    // 查询所有词汇记录
    List<VocabularyList> selectAllVocabulary();

    // 查询所有掌握情况为指定状态的词汇记录
    List<VocabularyList> selectVocabularyBySituation(String situation ,int userId);

    // 模糊查询包含指定生词的词汇记录
    List<VocabularyList> selectVocabularyByNewWordLike(String newWord,int userId);

    // 分页查询词汇记录（传入页码和每页记录数）
    List<VocabularyList> selectVocabularyByPage(int pageNum, int pageSize);

    // 查询词汇记录总数
    int countVocabulary(int userId);

    // 根据用户ID和掌握情况查询词汇记录
    List<VocabularyList> selectVocabularyByUserIdAndSituation(int userId, String situation);

    // 更新词汇记录的掌握情况
    int updateVocabularySituation(int id, String newSituation);

    // 批量插入词汇记录（传入词汇记录列表）
    int insertVocabularyBatch(List<VocabularyList> vocabularyLists);

    // 批量删除词汇记录（传入要删除的id列表）
    int deleteVocabularyByIds(List<Integer> idList);

    PageInfo<VocabularyList> page (Integer userId);

    int insertSelective(VocabularyList vocabularyList);

    int updateByPrimaryKeySelective(VocabularyList vocabularyList);

    List<VocabularyList> selectByCondition(VocabularyList vocabularyList);
}
